package es.tikitaka.dao.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;

import es.tikitaka.dao.TipoGolDicService;
import es.tikitaka.dictionary.TipoGolDic;

/**
 * 
 * @author Saúl Domínguez
 * @since 2010
 * @category PFC
 */

@Name("tipoGolService")
public class TipoGolDicServiceImpl implements TipoGolDicService {

	@In
	EntityManager em;

	/**
	 * Constructor por defecto
	 */
	public TipoGolDicServiceImpl() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * Método para listar todos los tipos de goles almacenados en el sistema
	 * 
	 * @return lista de tipos de goles
	 */
	@SuppressWarnings("unchecked")
	public List<TipoGolDic> getList() {
		List<TipoGolDic> result = new ArrayList<TipoGolDic>();
		result = em.createQuery("from TipoGolDic where tipo <> 'Gol penalty' order by tipo")
				.getResultList();
		return result;
	}

	/**
	 * Método para obtener el tipo de gol pasado una cadena
	 * 
	 * @param tipo
	 * @return
	 */
	public TipoGolDic getTipo(String tipo) {
		TipoGolDic result = new TipoGolDic();
		try {
			result = (TipoGolDic) em.createQuery(
					"from TipoGolDic where upper(tipo) like upper('%'||?1||'%')")
					.setParameter("1", tipo).getSingleResult();
		} catch (NoResultException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * Método para eliminar del sistema un tipo de gol
	 * 
	 * @param id
	 *            Id del tipo de gol a eliminar
	 * @return estado del proceso (true or false)
	 */
	public boolean delete(Integer id) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * Método para almacenar un tipo de gol en el sistema o las modificaciones
	 * sufridas por un tipo de gol existente
	 * 
	 * @param tipo
	 *            Tipo de gol a almacenar
	 * @return estado del proceso (true or false)
	 */
	public boolean save(TipoGolDic tipo) {
		// TODO Auto-generated method stub
		return false;
	}
}
